﻿using System.ComponentModel;

namespace D.UtilCore.Utils
{
    public static class EnumUtil
    {
        /// <summary>
        /// 获取枚举描述值
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static string? GetDescription(this Enum value)
        {
            Type enumType = value.GetType();
            // 获取枚举常数名称。
            var name = Enum.GetName(enumType, value);
            if (name != null)
            {
                // 获取枚举字段。
                var fieldInfo = enumType.GetField(name);
                if (fieldInfo != null)
                {
                    // 获取描述的属性。
                    var attr = Attribute.GetCustomAttribute(fieldInfo,typeof(DescriptionAttribute), false) as DescriptionAttribute;
                    if (attr != null)
                    {
                        return attr.Description;
                    }
                }
            }
            return null;
        }
    }
}
